//
//  NSString+BZHelper.h
//  BZFoundation
//
//  Created by 郭艺伟 on 2017/10/1.
//  Copyright © 2017年 郭艺伟. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (BZHelper)
#pragma mark - Validation
/**
 *    字符串是否为空字符串
 *
 *    @return 如果移除首尾空格后字符串字符串长度为0返回YES，否则返回NO
 */
- (BOOL)bz_isEmpty;

/**
 *    字符串是否为空字符串
 *
 *    @return 如果移除首尾空格后字符串字符串长度为0返回YES，否则返回NO
 *    @param trimFlag 是否移除字符串首尾空白符
 */
- (BOOL)bz_isEmptyShouldTrimBlankCharacter:(BOOL)trimFlag;

/**
 *    判断字符串是否为空指针/空字符串
 *
 *    @param string 需要判定的字符串
 *
 *    @return 如果传入对象为nil/为NSNull/不为NSString/移除首尾空白符后长度为0则返回YES，否则返回NO
 */
+ (BOOL)bz_stringIsEmpty:(NSString *)string;

/**
 *    判断字符串是否为空指针/空字符串
 *
 *    @param string   需要判定的字符串
 *    @param trimFlag 是否移除字符串首尾空白符
 *
 *    @return 如果传入对象为nil/为NSNull/不为NSString/移除首尾空白符后长度为0（可选）则返回YES，否则返回NO
 */
+ (BOOL)bz_stringIsEmpty:(NSString *)string trimBlankCharacter:(BOOL)trimFlag;

/**
 *    判断字符串是否为整形数据
 *
 *    @return 如果字符串符合整形格式返回YES，否则返回NO。
 */
- (BOOL)bz_stringIsInteger;

#pragma mark - Convert
/**
 *    从实例中获取无符号的int类型数字
 *
 *    @return 返回一个无符号的int类型数字
 */
- (unsigned int)bz_unsignedIntValue;

/**
 *    从实例中获取无符号的LongLong类型数字
 *
 *    @return 返回一个无符号的LongLong类型数字
 */
- (UInt64)bz_unsignedLongLongValue;

/**
 *    计算字符串字符个数（中文、英文、emoji表情分别算一个字符）
 *
 *    @return 返回经过计算的字符长度
 */
- (NSUInteger)bz_characterCount;

#pragma mark - util
/**
 *    隐藏手机号码部分位
 *
 *    @return 返回隐藏后的手机号码字符串(不足11位/含有非数字都返回空字符串)
 */
- (NSString *)bz_stringByGlossTelephone;

/**
 *    获取中文拼音字符串，
 *    如"漂亮"返回"piao liang"
 *
 *    @return 拼音，
 */
- (NSString *)bz_pinyinString;

/**
 *    获取中文拼音首字母,
 *    如"漂亮"返回"pl"
 *
 *    @return 拼音首字母
 */
- (NSString *)bz_pinyinFirstLetter;

/**
 *    判断字符串是否为ipv4地址
 *
 *    @return 如果字符串是ipv4地址返回YES，否则返回NO
 */
- (BOOL)bz_stringIsIPV4;

/**
 *    判断ipv4字符串地址为内网ip
 *    内网ip网段如下：
 *    10.0.0.0~10.255.255.255
 *    172.16.0.0~172.31.255.255
 *    192.168.0.1~192.168.255.255
 *
 *    @return 如果字符串为内网ip则返回YES，否则返回NO
 */
- (BOOL)bz_stringIsInternalIPV4;
@end
